
import 'package:flutter/cupertino.dart';
import 'package:sqflite/sqflite.dart';
import 'package:wangziyi_app/db/db_manager.dart';
//sb
abstract class BaseDBProvider{
  bool isTableExits=false;

  tableSqlString();//tableSqlString()抽象方法，由子类实现，返回创建表的具体sql；
  tableName();//tableName()抽象方法，由子类实现，返回要创建的表明;
  //tableBaseString()方法，返回表主键字段的基本sql定义，子类把其他字段的sql定义拼接到这个函数的返回值后面即可；
  tableBaseString(String name,String columnId){
    return '''create table $name(''';
  }

  //getDataBase()方法，返回一个数据库实例
  Future<Database> getDataBase() async{
    return await open();
  }
  @mustCallSuper
  prepare(name,String createSql)async{
    isTableExits =await DBManager.isTableExits(name);
    if(!isTableExits){
      Database db=await DBManager.getCurrDatabase();
      return await db.execute(createSql);
    }
  }

  @mustCallSuper
  open() async{
    if(!isTableExits){
      await prepare(tableName(), tableSqlString());
    }
    return await DBManager.getCurrDatabase();
  }
}